/******************************************************************************
 * 
 * Announce: CSharpKit, Basic algorithms, components and definitions.
 *           Copyright (C) ShenYongchen.
 *           All rights reserved.
 *   Author: 申永辰.郑州 (shenyczz@163.com)
 *  WebSite: http://gitee.com/shenyczz/csharp_csk
 *
 * THIS CODE IS LICENSED UNDER THE MIT LICENSE (MIT).
 * THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF 
 * ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY
 * IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR
 * PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.
 * 
******************************************************************************/

using System;
using System.Runtime.InteropServices;

using codes_context = System.IntPtr;

namespace CSharpKit.Native.ECCODES
{
    // codes_context
    // The context is a long life configuration object of eccodes.
    // It is used to define special allocation and free routines or
    // to set special eccodes behaviours and variables.
    partial class eccodes
    {
        /// <summary>
        /// 原型: codes_context* codes_context_get_default(void) <br/>
        /// 功能: Get the static default context <br/>
        /// 状态:  <br/>
        /// </summary>
        /// <returns>the default context, NULL it the context is not available</returns>
        [DllImport(_dllname_, CharSet = CharSet.Auto, EntryPoint = "codes_context_get_default")]
        public extern static codes_context codes_context_get_default();
        /// <summary>
        /// <para>功能: Frees the cached definition files of the context. </para>
        /// <para>说明: </para>
        /// </summary>
        /// <param name="c">the context to be deleted </param>
        /// <returns> </returns>
        /// <remarks>
        /// 原型: void codes_context_delete(codes_context* c)
        /// </remarks>
        [DllImport(_dllname_, CharSet = CharSet.Auto, EntryPoint = "codes_context_delete")]
        public static extern void codes_context_delete(codes_context c);


        /// <summary>
        /// <para>功能: </para>
        /// <para>说明: </para>
        /// </summary>
        /// <param name="context"> </param>
        /// <returns> </returns>
        /// <remarks>
        /// 原型: void codes_bufr_multi_element_constant_arrays_on(codes_context* c)
        /// </remarks>
        [DllImport(_dllname_, CharSet = CharSet.Auto, EntryPoint = "codes_bufr_multi_element_constant_arrays_on")]
        public static extern void codes_bufr_multi_element_constant_arrays_on(codes_context context);

        /// <summary>
        /// <para>功能: </para>
        /// <para>说明: </para>
        /// </summary>
        /// <param name="context"> </param>
        /// <returns> </returns>
        /// <remarks>
        /// 原型: void codes_bufr_multi_element_constant_arrays_off(codes_context* c)
        /// </remarks>
        [DllImport(_dllname_, CharSet = CharSet.Auto, EntryPoint = "codes_bufr_multi_element_constant_arrays_off")]
        public static extern void codes_bufr_multi_element_constant_arrays_off(codes_context context);


        /// <summary>
        /// <para>功能: Sets the search path for definition files. </para>
        /// <para>说明: </para>
        /// </summary>
        /// <param name="context">the context to be modified </param>
        /// <param name="path">the search path for definition files </param>
        /// <returns> </returns>
        /// <remarks>
        /// 原型: void codes_context_set_definitions_path(codes_context* c, const char* path)
        /// </remarks>
        [DllImport(_dllname_, CharSet = CharSet.Auto, EntryPoint = "codes_context_set_definitions_path")]
        public static extern void codes_context_set_definitions_path(codes_context context, string path);

        /// <summary>
        /// <para>功能: Sets the search path for sample files. </para>
        /// <para>说明: </para>
        /// </summary>
        /// <param name="context">the context to be modified </param>
        /// <param name="path">the search path for sample files </param>
        /// <returns> </returns>
        /// <remarks>
        /// 原型: void codes_context_set_samples_path(codes_context* c, const char* path);<br/>
        /// </remarks>
        [DllImport(_dllname_, CharSet = CharSet.Auto, EntryPoint = "codes_context_set_samples_path")]
        public static extern void codes_context_set_samples_path(codes_context context, string path);

        /// <summary>
        /// <para>功能: Turn on support for multi-fields in single GRIB messages </para>
        /// <para>说明: </para>
        /// </summary>
        /// <param name="context">the context to be modified </param>
        /// <returns> </returns>
        /// <remarks>
        /// 原型: void codes_grib_multi_support_on(codes_context* c)
        /// </remarks>
        [DllImport(_dllname_, CharSet = CharSet.Auto, EntryPoint = "codes_grib_multi_support_on")]
        public static extern void codes_grib_multi_support_on(codes_context context);

        /// <summary>
        /// <para>功能: Turn off support for multi-fields in single GRIB messages. </para>
        /// <para>说明: </para>
        /// </summary>
        /// <param name="context">the context to be modified </param>
        /// <returns> </returns>
        /// <remarks>
        /// 原型: void codes_grib_multi_support_off(codes_context* c)
        /// </remarks>
        [DllImport(_dllname_, CharSet = CharSet.Auto, EntryPoint = "codes_grib_multi_support_off")]
        public static extern int codes_grib_multi_support_off(codes_context context);

        /// <summary>
        /// <para>功能: Reset file handle in multiple GRIB field support mode </para>
        /// <para>说明: </para>
        /// </summary>
        /// <param name="context">the context to be modified </param>
        /// <param name="f">the file pointer </param>
        /// <returns> </returns>
        /// <remarks>
        /// 原型: void codes_grib_multi_support_reset_file(codes_context* c, FILE* f); <br/>
        /// </remarks>
        [DllImport(_dllname_, CharSet = CharSet.Auto, EntryPoint = "codes_grib_multi_support_reset_file")]
        public static extern void codes_grib_multi_support_reset_file(codes_context context, IntPtr f);

        /// <summary>
        /// <para>功能: </para>
        /// <para>说明: </para>
        /// </summary>
        /// <param name="context"> </param>
        /// <returns> </returns>
        /// <remarks>
        /// 原型: char* codes_definition_path(const codes_context* c)
        /// </remarks>
        [DllImport(_dllname_, CharSet = CharSet.Auto, EntryPoint = "codes_definition_path")]
        public static extern string codes_definition_path(codes_context context);

        /// <summary>
        /// <para>功能: </para>
        /// <para>说明: </para>
        /// </summary>
        /// <param name="context"> </param>
        /// <returns> </returns>
        /// <remarks>
        /// 原型: char* codes_samples_path(const codes_context* c)
        /// </remarks>
        [DllImport(_dllname_, CharSet = CharSet.Auto, EntryPoint = "codes_samples_path")]
        public static extern string codes_samples_path(codes_context context);
      




























































        // {{END}}
    }

}
